約 5,989,638 件
https://w.atwiki.jp/wallguy/pages/168.html
イーサネット Xerox社とDEC社(現Hewlett Packard社)が考案したLAN規格。 ⇒携帯用語集へ
https://w.atwiki.jp/shimizunochikara/pages/15.html
はじめに ArduinoとXBeeとモーターシールドを使ってラジコンを作ろうと思う。ラジコンのソースコードは今後Arduinoを用いた動くおもちゃを作る際の動作確認に利用する事が出来る。また、XBeeによる無線通信とモーターの制御を組み合わせた最も基本的な工作のひとつであるため、ソースコードやノウハウを他の工作に生かす事ができると考える。 Arduino Tankの機能 無線により操作が可能 一本のスティックで操作が可能 スティックを倒した方向に進む(角度は無段階) スティックを倒した角度に比例してスピードが変化(1chにつき255段階) 超信地展開が可能(左右のキャタピラーを逆方向に回す事によりその場で回転) 車体側 車体側の機能 無線により値を受け取る事で動作 左右のキャタピラーがそれぞれ比例制御が可能(8bit-255段階) ハードウェアの構成 キャタピラー(タミヤ工作キット) ギアボックス(タミヤダブルギアボックス) シャーシ(タミヤユニバーサルプラスチック基盤) マイコン(Arduino Uno) モータードライバー(Ardumoto Arduinoのシールドの一種) 通信モジュール(XBee Series2) ハードウェアの説明 タミヤ工作キットのキャタピラー工作キットとダブルギアボックスを組み合わせて駆動系を作った。また、シャーシはタミヤユニバーサルプラスチック基盤で作った。マイコンはArduino Unoを用いており、モータードライバーにはArdumotoを利用している。また、ArduinoとXbeeはArduino → XBeeは分圧抵抗により電圧を落としている。XBee→Arduinoはそのまま入力を行っている。本来はロジックレベル変換レベル変換を行うべきであるが、現状で動作している。(XBeeに5Vを入力してしまうと壊れるので注意) ソフトウェアの説明 XBeeから3Byteのデータを受け取り、それを2系統の8bit出力と1bitの回転方向に変換し、Ardumotoに出力する事でモーターの制御を行っている。 スティックコントローラー側 スティックコントローラーの機能 スティックを倒した方向に応じて、2つのキャタピラー出力に変換し無線送信する スティックを押す事で超信地旋回するモードとしないモードに切り替わる(超信地旋回するモードの場合には緑LEDが点灯) 使用した部品 Arduino Fio XBee LiPoバッテリー アナログジョイスティック LED × 2(赤, 緑) ブレッドボード ハードウェアの説明 Arduinoのアナログ入力0, 1にジョイスティックのX軸とY軸を接続し、AD変換を行っている。また、D2ピンにボタンを接続し、スイッチが押された場合はGNDレベルに落ち、割り込みが発生するようになっている。D2ピンとスイッチに関しては 10KΩのプルアップ抵抗が取り付けられている。またD3とD5ピンにLEDが取り付けられており、PWMにより明るさの調整が可能になっている。 ソフトウェアの説明 XY座標により入力されるデータを2つのモーター出力に変換している。変換のために極座標に飛ばし、角度θにより左右のモーター出力の係数を出力する関数を記述し、それをベクトルの大きさRと掛け合わせる事でモーター出力を得ている。またスイッチによりモードの切り替えを行い、モード0(超信地旋回あり)とモード1(超信地旋回しない)で別の関数を呼び出している。データは現在100ms毎に送信を行っている。チャタリング対策に関してもソフトウェア的に行っている。一旦ボタンが押された場合は500ms割り込みを無視するように設定されている。 実験 Arduino Tank Ver0.1と合わせて動作実験を行い、意図した通りに動作している事を確認した。ただし、通信エラーが発生する事がある。通信エラーはPCの近く等電磁波が発生していると考えられる場所、および走っている途中で発生している。現在はデータの送信周期は100msになっているが、遅くしすぎるとレスポンスが悪く、速くしすぎると通信エラーが頻発する。 今後の課題 通信モジュールのテスト(どういった場合にエラーが発生するか) 一定時間データが来ない場合に停止するような実装(車体側で一定時間データが来ない場合タイマー割り込みにより出力を0にする実装) 最終的にこうなった(苦笑)
https://w.atwiki.jp/drpopeye/pages/15.html
Arduinoを使わず、AVRマイコンでArduino互換を作る場合 ブレッドボードでArduinoを作ってみた このニコニコ動画の回路が一番安定して動いた。 digilife このサイトのやり方だと電解コンデンサを使っていないので安定しなかった。 ATmega328P-PUに貼ると便利なシール Arduino unoでのブートローダー焼き Arduino UNO でブートローダー焼き N.Yamazaki's blog 基本的にはこのやり方で大丈夫そう Arduino を AVR プログラマ(ISP In-System Programmer)として使う 不安であれば水晶発振子つけた状態でブートローダー焼き Arduinoにちょうど良い電源 なんでも作っちゃう、かも。 UNOで動いていたのにArduino pro miniで動かない、といった場合に確認すると良い。 Arduinoでの電流増幅の例 フルカラーLEDコントローラ(赤外リモコン式)およびフルカラーLEDテープ(3-1/3) フルカラーLEDコントローラ(赤外リモコン式)およびフルカラーLEDテープ(3-2/3) Arduinoの出力ポートは20mA程度しか流せないので増幅する必要あり。 Arduinoでの交流制御 連載(26)Arduinoで何でも制御 いろんなArduinoがある(8) 連載(26)Arduinoで何でも制御 いろんなArduinoがある(9) ソリッドステート・リレーを使ってArduinoで交流100Vを制御する例。 ArduinoでSDカードの読み書き なんでも作っちゃう、かも。 自分はこのHPを参考に実装した。 SatE-O Arduino系のEagle用library The Adafruit Eagle Library atmelマイコンだけでなくarduino系でよく使う部品のlibraryもまとまってて良い。 Arduino AVR Library for EAGLE Layout Editor arduinoのEagle用library Arduinoで無線で加速度センサのデータをPCで受信するときの最高速度 加速度センサKXM52-1050をarduinoに接続し、xbeeで57600ボーレートで無線通信。 openframeworksだと最高50Hzくらいで3軸の値を取得できた。3軸のデータを3バイトでリアルタイムに送る場合はシリアルの通信的にこれ以上は厳しそう。ボーレート115200に上げればいけるかもしれないが不安定そうなので未確認。
https://w.atwiki.jp/arduino/pages/49.html
秋月の100円フルカラーLED( http //akizukidenshi.com/catalog/g/gI-02476/ )を制御してみます。 抵抗の計算 赤(Vf=2.0V) (5V-2.0V)/0.015A=200Ω 緑(Vf=3.0V) (5V-3.0V)/0.015A=133Ω 青(Vf=3.5V) (5V-3.5V)/0.015A=100Ω とりあえず全部220Ω。 3軸加速度センサーにRGBを連動させてみる int xPin = 0; int yPin = 1; int zPin = 2; int rPin = 9; int gPin = 10; int bPin = 11; long count = 0; void setup() { Serial.begin(38400); pinMode(rPin, OUTPUT); pinMode(gPin, OUTPUT); pinMode(bPin, OUTPUT); } int xPrev=128, xVal=0; int yPrev=128, yVal=0; int zPrev=128, zVal=0; void loop() { int x = analogRead(xPin); int y = analogRead(yPin); int z = analogRead(zPin); if(true){ int dx = abs(xPrev-x); int dy = abs(yPrev-y); int dz = abs(zPrev-z); if(dx dy dx dz){ dy=0; dz=0; } if(dy dx dy dz){ dx=0; dz=0; } if(dz dx dz dy){ dx=0; dy=0; } xVal += dx/2; yVal += dy/2; zVal += dz/2; xPrev = x; yPrev = y; zPrev = z; xVal = xVal-xVal/400-1; yVal = yVal-yVal/400-1; zVal = zVal-zVal/400-1; xVal = min(25500, max(0, xVal)); yVal = min(25500, max(0, yVal)); zVal = min(25500, max(0, zVal)); analogWrite(rPin, constrain(sqrt(xVal),0,255)); analogWrite(gPin, constrain(sqrt(yVal),0,255)); analogWrite(bPin, constrain(sqrt(zVal),0,255)); delay(2); }else{ x = min(255, max(0, x-384)); y = min(255, max(0, y-384)); z = min(255, max(0, z-384)); analogWrite(rPin, x*3/16); analogWrite(gPin, y*7/16); analogWrite(bPin, z*1/16); } /* // for arduinoscope for (int i=0;i 6;i++){ Serial.print(analogRead(i)); Serial.print(" "); } Serial.println(); */ count++; }
https://w.atwiki.jp/ayumikizuka/pages/33.html
過去の資料 2013.12.12 第1回Arduino勉強会 in ハコダテの資料(PDF/17.5MB) ……ArduinoインストールからLED点灯まで 2014.02.06 第2回Arduino勉強会 in ハコダテの資料(PDF/2.9MB) ……LEDの明るさを変えてみよう、プログラムの理解 Arduino勉強会 in ハコダテ Facebook ページ 2014.12.12 第1回Arduino勉強会 in ハコダテ 2014.02.06 第2回Arduino勉強会 in ハコダテ Arduino勉強会 in ハコダテ の公式生放送ページ ニコニコ生放送 http //com.nicovideo.jp/community/co2269930 ニコニコ動画、Twitter、Facebookにアカウントを持ってる方は見れます。 基本的に参加者は写しません。 total: - today: - yesterday: -
https://w.atwiki.jp/arduino/pages/29.html
温度センサー LM61CIZ http //akizukidenshi.com/catalog/g/gI-02726/ 4つで200円の温度センサー。 ■汎用の高精度IC温度センサーです ■測定範囲:−30℃〜100℃ ■温度係数:+10mV/℃ ■動作電圧範囲:+2.7〜+10V ■出力インピーダンス:800Ω ・Vo=(+10mV/℃×T℃)+600mV +100℃/+1600mV +85℃/+1450mV +25℃/+850mV 0℃/+600mV −25℃/+350mV −30℃/+300mV 単純な温度取得 imageプラグインエラー ご指定のURLはサポートしていません。png, jpg, gif などの画像URLを指定してください。 int ledPin = 13; int templPin = 5; void setup() { analogReference(INTERNAL); Serial.begin(19200); } void loop() { int val; double volt; double templ; val = analogRead(templPin); // 0-1023 / 1.1Vで1024になる volt = 1.1*val/1024.0; templ = (volt-0.6)*100.0; // 10mV=1c Serial.print(val); Serial.print(" / "); Serial.print(volt); Serial.print("V / "); Serial.print(templ); Serial.println("C"); delay(1000); } 複数回データを取得して平均する int ledPin = 13; int templPin = 5; void setup() { analogReference(INTERNAL); Serial.begin(19200); } #define SAMPLING_COUNT 30 void loop() { int val; int i; double volt; double templ; val = 0; for(i=0; i SAMPLING_COUNT; i++){ val += analogRead(templPin); delay(10); } val = val/SAMPLING_COUNT; volt = 1.1*val/1024.0; templ = (volt-0.6)*100.0; // 10mV=1c Serial.print(val); Serial.print(" / "); Serial.print(volt); Serial.print("V / "); Serial.print(templ); Serial.println("C"); delay(700); } ブレが小さくなる。 LM35DZ http //akizukidenshi.com/catalog/g/gI-00116/ 高精度IC温度センサ LM35DZ 0〜100℃ [LM35DZ] 通販コード I-00116 発売日 2001/12/12 メーカー NATIONAL SEMICONDUCTOR 摂氏(℃)に比例した電圧出力 ◎例: 0℃→0V 20℃→200mV ◆測定温度範囲:0〜100℃ ◆精度:±1℃ ◆温度係数:10.0mV/℃ ◆電源電圧:DC4V〜20V 低消費電流:60μA ◆低出力インピーダンス:0.1Ω ◆T0-92パッケージ ピン配置はLM61CIZと同じだが出力全圧が違う。 LM61CIZ vs LM35DZ void setup() { analogReference(INTERNAL); Serial.begin(115200); } void task_LM61CIZ() { static int pin = 5; static int sum = 0; static int samples = 0; double volt; double templ; sum += analogRead(pin); samples += 1; if(30 samples){ volt = 1.1*sum/samples/1024.0; templ = (volt-0.6)*100.0; // 10mV=1c Serial.print("LM61CIZ "); Serial.print(sum); Serial.print(" / "); Serial.print(volt); Serial.print("V / "); Serial.print(templ); Serial.println("C"); sum = 0; samples = 0; } } void task_LM35DZ() { static int pin = 4; static int sum = 0; static int samples = 0; double volt; double templ; sum += analogRead(pin); samples += 1; if(30 samples){ volt = 1.1*sum/samples/1024.0; templ = volt*100.0; // 10mV=1c Serial.print("LM35DZ "); Serial.print(sum); Serial.print(" / "); Serial.print(volt); Serial.print("V / "); Serial.print(templ); Serial.println("C"); sum = 0; samples = 0; } } void loop() { task_LM61CIZ(); task_LM35DZ(); delay(100); } LM61CIZ 27723 / 0.96V / 36.07C LM35DZ 10155 / 0.35V / 35.19C LM61CIZ 27722 / 0.96V / 36.06C LM35DZ 10156 / 0.35V / 35.19C LM61CIZ 27721 / 0.96V / 36.06C LM35DZ 10153 / 0.35V / 35.18C LM61CIZ 27728 / 0.96V / 36.08C LM35DZ 10158 / 0.35V / 35.20C LM61CIZ 27721 / 0.96V / 36.06C LM35DZ 10148 / 0.35V / 35.17C LM61CIZ 27724 / 0.96V / 36.07C LM35DZ 10155 / 0.35V / 35.19C LM61CIZ 27726 / 0.96V / 36.08C LM35DZ 10161 / 0.35V / 35.21C 参考URL http //nekosan0.bake-neko.net/structure_analog_in.html http //www.musashinodenpa.com/arduino/ref/index.php?f=0 pos=1949
https://w.atwiki.jp/nkym_memo/pages/185.html
インストール Ubuntu(12.04で確認) ドライバ・IDEのインストール $ sudo apt-get install arduino パーミッションの変更 $ sudo usermod -a -G dialout ログインユーザー名 $ sudo chmod a+rw /dev/ttyACM0 /dev/ttyACM0かどうかはコマンドdmesgで確認する。 参考URL http //blog.markloiseau.com/2012/05/install-arduino-ubuntu/ emacsで開発 arduino-mode $ cd .emacs.d $ git clone git //github.com/bookest/arduino-mode.git .emacsに追記 (add-to-list load-path "~/.emacs.d/arduino-mode/") (load "arduino-mode") (setq auto-mode-alist (cons ("\\.pde$" . arduino-mode) auto-mode-alist)) (途中)
https://w.atwiki.jp/shirayuu/pages/29.html
NTPは、自動で時刻合わせするためプロトコル。 NTPD は、自動で時刻合わせしてくれるデーモン。 といったところでしょうか。サーバを運営する上ではしっかりと時刻を合わせておきたい物です。 時刻合わせせずに放置しておくと結構ずれますよ。 NTPD のインストール NTPD の設定外部NTPサーバの決定 ntp.conf ファイルのバックアップ ntp.conf の設定参考になるサイト 実際に編集 NTPD の起動 NTPD の確認 ネットワーク内の同期確認 NTPD のインストール FreeBSD 6.2 では、最初から入ってる模様です。 ついでに、ネットワーク内では自分の立てた NTPサーバから時刻を取得できるようにしてみましょう。 Ubuntu 8.10 では、以下コマンドでインストールしましょう。 $ sudo apt-get install ntp NTPD の設定 FreeBSD も Ubuntu も設定ファイルは/etc/ntp.conf です。 外部NTPサーバの決定 さて、時刻取得のサーバですが以下の3つが推奨されています。 ntp.jst.mfeed.ad.jp ntp.nict.jp ntp.ring.gr.jp 理由としては、安定した時刻の取得のためです。 ここらへんの詳しいことは、 NTP Wiki http //wiki.nothing.sh/page/NTP を参考して下さい。 NTPD は、複数のサーバを設定することができるので全部使っちゃいましょう。 ntp.conf ファイルのバックアップ もちろん、conf ファイルは設定変更前にバックアップを取っておきます。 # cp /etc/ntp.conf /etc/ntp.conf.orig ntp.conf の設定 参考になるサイト http //www.asahi-net.or.jp/~AA4T-NNGK/ntpd.html 実際に編集 さて、実際に編集するわけですが、ntp.conf には外部サーバの登録とその登録されたサーバのアクセス制限を行うことができます。 アクセス制限は、自分が NTPサーバにどう答えるかを設定する物です。 アクセス制限に関してのポイントは次の通りでしょう。 主に自分は正しい時刻を取得するのが目的なのでそれ以外の目的(逆に時刻を変更されたり、自分の状態を報告する)は無視する ネットワーク内からの時刻問い合わせには答える ネットワーク外からはすべての要求に対して無視する。 ということで、 外部サーバの要求に対しては時刻の問い合わせのみを行う。 ネットワーク内からは、時刻の問い合わせのみを受け付ける。 ということになります。 もちろん、デフォルトでは問い合わせはすべて拒否します。 アクセス制限やその他記述に関しては以下サイトを参考にしました。 http //www.aconus.com/~oyaji/ntp/ntp.htm http //honana.com/ntp/setting.html http //www.asahi-net.or.jp/~AA4T-NNGK/ntpd.html # /etc/ntp.conf ## デフォルトの設定 いろいろ拒否する ## 自分自身のアクセス すべて許可 restrict default noquery nomodify notrap restrict 127.0.0.1 ## アクセス設定 ## noqueryサーバからの時刻問い合わせがきたとき無視する ## nomodifyサーバからの設定変更の要求がきたとき無視する ## notrap状態変更時にトラップを上げない ## ネットワーク内の設定 ## 時刻問い合わせのみ答える restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap ## 外部サーバのアクセス設定 restrict ntp.jst.mfeed.ad.jp noquery nomodify notrap restrict ntp.ring.gr.jp noquery nomodify notrap # nict は3行続けてかく restrict ntp.nict.jp noquery nomodify notrap restrict ntp.nict.jp noquery nomodify notrap restrict ntp.nict.jp noquery nomodify notrap ## 外部サーバの指定 server ntp.jst.mfeed.ad.jp server ntp.ring.gr.jp # nict は3行続けて書くのが重要 server ntp.nict.jp server ntp.nict.jp server ntp.nict.jp ## 同期したとき、時間のずれの情報を /etc/ntp/drift に書き込む driftfile /var/lib/ntp/ntp.drift とまあ、こんな感じで記述してみました。 NTPD の起動 NTPD を起動する前にできるだけ時刻を修正してく必要があります。そのため、 NTPD を起動する前には、 # ntpdate ntp.ring.gr.jp ntpdate で時刻合わせをしておきます。 時刻合わせが正しく行われたら、 FreeBSDは以下のコマンド # ntpd また、/etc/rc.conf に以下の文面を追記 ntpd_enable="YES" Ubuntu は以下のコマンド $ sudo /etc/init.d/ntp start で実際に起動させましょう。 NTPD の確認 では、実際に動いたか確認するために # ntpq -p で確認してみましょう。 実際にこのような返答がくるでしょう。 ============================================================================== *ntp1.jst.mfeed. 210.173.160.56 2 u 36 64 377 13.845 -13.609 1.484 ntp-a3.nict.go. .INIT. 16 u - 64 0 0.000 0.000 0.000 +ring.aist.go.jp 60.56.119.79 3 u 25 64 377 18.880 -12.044 1.102 ネットワーク内の同期確認 さて自分で作ったNTPサーバが実際にネットワーク内のPCから実際に時刻問い合わせがきた場合、 うまく時刻を返せてるかを確かめてみましょう。 Windows からは桜時計、Unix系では ntpdate あたりで確認してみるといいでしょう。 ntpdate では、 # ntpdate サーバのアドレス となるでしょう。 桜時計はVectorからダウンロードしSKRWATCH.EXE を実行して NTPサーバー名/IPアドレス の欄にサーバのアドレスを入れてオンラインボタンを押せば確認できます。
https://w.atwiki.jp/fns1556/pages/32.html
Windows 7 NTP Client設定 タスクバーの時刻>日付と時刻の設定の変更>インターネット時間>設定の変更>サーバー名を入力し、今すぐ更新をクリック(よく失敗することもあるので、2~3回試してみる) NTP Clientの同期スケジュール変更 スタート>すべてのプログラム>アクセサリ>タスクスケジューラ タスクスケジューラライブラリ>Microsoft>Windows>Time Synchronizatioinを編集することで可能 NTP同期の確認 以下のコマンドにより、同期先と同期元のズレを表示できる。(以下は途中で同期を取った例) W32TM /STRIPCHART /COMPUTER ntp.nict.jp NTP用のWindows Timeサービスは常時動いていないため、タスクスケジューラで動作するようになっている。 タスクスケジューラを実行することで、時刻同期が行われる。(サービスが連動して開始し、終了する) サービスを直接実行すると、サービスが動いていないため、エラーとなる。 サービスを手動で開始すれば直接サービスから時刻同期を取ることが可能。 Windows Server 2008 NTP Client設定 W32TM /REGISTER ←ドメインコントローラー以外 W32TM /CONFIG /MANUALPEERLIST NTPサーバ名またはIP /SYNCFROMFLAGS MANUAL W32TM /CONFIG /UPDATE 時刻同期が取れるか確認 W32TM /RESYNC NTP Clinet設定の確認 W32TM /QUERY /COMPUTER LOCALHOST /CONFIGURATION Type 同期先 の所がntp.nict.jp等になっていれば、設定が反映されている。 NTP Server設定 Active Directory役割をインストール済みの場合はデフォルトでNTP Server機能が有効になっている。 よってADなしの場合レジストリエディタで有効化を行う。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProvider\NtpServer Enableの値を0から1に変更する。 W32TM /CONFIG /UPDATEにて適用 また、Firewallにて着信パケットの許可設定を行う プロトコル:UDP ポート番号:123 Windows Server 2008 R2 ActiveDirectory環境におけるNTP Client設定 W32TM /QUERY /CONFIGURATIONにより設定を確認する。 NtpClientのTypeがNT5DSとなっている。(ActiveDirectoryのため)以下のコマンドで設定する。 W32TM /CONFIG /MANUALPEERLIST 192.168.1.2 /SYNCFROMFLAGS MANUAL W32M /CONFIG /UPDATE もう一度W32TM /QUERY /CONFIGURATIONにより設定を確認する。 Typeが設定値に変化し、NTP Clientの設定が行われた。 NTP Clientの同期確認はW32TM /RESYNCコマンドにより行う。 NTP Server設定(参考) まずはじめに、NTPのサービスを自動起動するように設定し、サービスを開始する。 W32TM /QUERY /CONFIGURATIONにより設定を確認する。 NtpServerのEnabledが0と無効になっているため、レジストリエディタで有効化を行う。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\w32time\TimeProvider\NtpServerのEnable値を0から1に変更する。 W32TM /CONFIG /UPDATEコマンドにて適用 もう一度W32TM /QUERY /CONFIGURATIONにより設定を確認する。 Enabled値が1に変化し、NTP Serverの設定が行われた。 ※(注意)Windows7, Windows Server 2008 R2環境におけるトリガーサービス Windows7, Server 2008 R2ではトリガーサービス機能により、サービスが自動停止することができる。 W32Timeサービスはこの対象となっているため、自動的に終了してしまう。 そのため、このトリガーサービスを無効にする必要がある。 コマンドにより、W32Timeサービスのトリガーサービスを無効化する ネットワーク状態によるトリガーサービスを設定する。(これをせずにサービスの自動スタートでもよい) ※(注意)Cisco機器をクライアントにする場合の設定 このままの設定ではCisco機器をNTP Clientにした場合同期が取れない現象が発生する。 これは、Windows Serverが同期を何回かして安定して始めてCisco側で同期が取れるみたい・・・ レジストリの以下のキーを編集する。ポーリングを10分(604800→600)に変更し、サービスを再起動する。 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\W32Time\TimeProviders\NtpClient\SpecialPollInterval 後は複数回NTPの同期完了後、Cisco側でNTP設定により同期が取れるようになる。 参考:Windows 7 および Windows Server 2008 R2 のスタンドアロン環境で Windows Time サービスが自動的に起動しない 参考:Windows Time Service Tools and Settings (SpecialPollInterval) 参考:Cisco 機器の時刻を Windows マシンと NTP で同期する YAMAHA ntp同期はntpdateにて行えるが、コマンド実行時の1回のみとなる。 そのため、スケジュールにより、このコマンドを一時間置きに実行する。 例)192.168.1.1のntpサーバに毎時同期を行う。 schedule at 1 */* * 00 * ntpdate 192.168.1.1 参考:4.13 NTP による時計の設定 参考:YAMAHAルーターで定期的にNTP時刻合わせ
https://w.atwiki.jp/arduino/pages/39.html
(todo) たぶん、mega88pには http //www.geocities.jp/arduino_diecimila/bootloader/ にあるavrdude.confの更新が必要。 http //www.geocities.jp/arduino_diecimila/bootloader/files/avrdude.conf 引用↓ 追記2:ATmega328Pにブートローダを書くときの情報 … [続きを見る] 新しいavrdude.confをダウンロードしてください。 (ATmega328PとATmega88Pのチップ情報を追加してあります) 以下のヒューズの値,ロックビットの値,ブートローダのhexファイルを使ってください。(arduino-0013\hardware\board.txtより) * hfuse = DA * lfuse = FF * efuse = 05 * unlock = 3F * lock = 0F * bootloader .hex file arduino-0013(or 0014)\hardware\bootloaders\atmega168\ATmegaBOOT_168_atmega328.hex #------------------------------------------------------------ # ATmega88P #------------------------------------------------------------ part id = "m88p"; desc = "ATMEGA88P"; has_debugwire = yes; flash_instr = 0xB6, 0x01, 0x11; eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; stk500_devcode = 0x73; # avr910_devcode = 0x; signature = 0x1e 0x93 0x0f; pagel = 0xd7; bs2 = 0xc2; chip_erase_delay = 9000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; progmodedelay = 0; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 15; resetdelay = 15; chiperasepulsewidth = 0; chiperasepolltimeout = 10; programfusepulsewidth = 0; programfusepolltimeout = 5; programlockpulsewidth = 0; programlockpolltimeout = 5; memory "eeprom" paged = no; page_size = 4; size = 512; min_write_delay = 3600; max_write_delay = 3600; readback_p1 = 0xff; readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", " 0 0 0 0 0 0 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", " 0 0 0 0 0 0 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 0 0 0 0 a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " 0 0 0 0 0 0 0 0"; mode = 0x41; delay = 5; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 8192; page_size = 64; num_pages = 128; min_write_delay = 4500; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 0 0 0 0 0", " x x x a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 0 0 0 0 0", " x x x a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 0 0 a11 a10 a9 a8", " a7 a6 a5 x x x x x", " 0 0 0 0 0 0 0 0"; mode = 0x41; delay = 6; blocksize = 64; readsize = 256; ; memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "0 0 0 0 0 0 0 0 i i i i i i i i"; ; memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "0 0 0 0 0 0 0 0 o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "0 0 0 0 0 0 0 0 i i i i i i i i"; ; memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "0 0 0 0 0 0 0 0 x x x x x x x o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 i"; ; memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 0 0 0 0 0", "0 0 0 0 0 0 0 0 1 1 i i i i i i"; ; memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 0 0 o o o o o o o o"; ; memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0", "0 0 0 0 0 0 a1 a0 o o o o o o o o"; ; ; #------------------------------------------------------------ # ATmega328P #------------------------------------------------------------ part id = "m328p"; desc = "ATMEGA328P"; has_debugwire = yes; flash_instr = 0xB6, 0x01, 0x11; eeprom_instr = 0xBD, 0xF2, 0xBD, 0xE1, 0xBB, 0xCF, 0xB4, 0x00, 0xBE, 0x01, 0xB6, 0x01, 0xBC, 0x00, 0xBB, 0xBF, 0x99, 0xF9, 0xBB, 0xAF; stk500_devcode = 0x86; # avr910_devcode = 0x; signature = 0x1e 0x95 0x0F; pagel = 0xd7; bs2 = 0xc2; chip_erase_delay = 9000; pgm_enable = "1 0 1 0 1 1 0 0 0 1 0 1 0 0 1 1", "x x x x x x x x x x x x x x x x"; chip_erase = "1 0 1 0 1 1 0 0 1 0 0 x x x x x", "x x x x x x x x x x x x x x x x"; timeout = 200; stabdelay = 100; cmdexedelay = 25; synchloops = 32; bytedelay = 0; pollindex = 3; pollvalue = 0x53; predelay = 1; postdelay = 1; pollmethod = 1; pp_controlstack = 0x0E, 0x1E, 0x0F, 0x1F, 0x2E, 0x3E, 0x2F, 0x3F, 0x4E, 0x5E, 0x4F, 0x5F, 0x6E, 0x7E, 0x6F, 0x7F, 0x66, 0x76, 0x67, 0x77, 0x6A, 0x7A, 0x6B, 0x7B, 0xBE, 0xFD, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00; hventerstabdelay = 100; progmodedelay = 0; latchcycles = 5; togglevtg = 1; poweroffdelay = 15; resetdelayms = 1; resetdelayus = 0; hvleavestabdelay = 15; resetdelay = 15; chiperasepulsewidth = 0; chiperasepolltimeout = 10; programfusepulsewidth = 0; programfusepolltimeout = 5; programlockpulsewidth = 0; programlockpolltimeout = 5; memory "eeprom" paged = no; page_size = 4; size = 1024; min_write_delay = 3600; max_write_delay = 3600; readback_p1 = 0xff; readback_p2 = 0xff; read = " 1 0 1 0 0 0 0 0", " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; write = " 1 1 0 0 0 0 0 0", " 0 0 0 x x x a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_lo = " 1 1 0 0 0 0 0 1", " 0 0 0 0 0 0 0 0", " 0 0 0 0 0 0 a1 a0", " i i i i i i i i"; writepage = " 1 1 0 0 0 0 1 0", " 0 0 x x x x a9 a8", " a7 a6 a5 a4 a3 a2 0 0", " x x x x x x x x"; mode = 0x41; delay = 5; blocksize = 4; readsize = 256; ; memory "flash" paged = yes; size = 32768; page_size = 128; num_pages = 256; min_write_delay = 4500; max_write_delay = 4500; readback_p1 = 0xff; readback_p2 = 0xff; read_lo = " 0 0 1 0 0 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; read_hi = " 0 0 1 0 1 0 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 a5 a4 a3 a2 a1 a0", " o o o o o o o o"; loadpage_lo = " 0 1 0 0 0 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; loadpage_hi = " 0 1 0 0 1 0 0 0", " 0 0 0 x x x x x", " x x a5 a4 a3 a2 a1 a0", " i i i i i i i i"; writepage = " 0 1 0 0 1 1 0 0", " 0 0 a13 a12 a11 a10 a9 a8", " a7 a6 x x x x x x", " x x x x x x x x"; mode = 0x41; delay = 6; blocksize = 128; readsize = 256; ; memory "lfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "hfuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x o o o o o o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0", "x x x x x x x x i i i i i i i i"; ; memory "efuse" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 0 0 0 0 0 0 0 0 1 0 0 0", "x x x x x x x x x x x x x o o o"; write = "1 0 1 0 1 1 0 0 1 0 1 0 0 1 0 0", "x x x x x x x x x x x x x i i i"; ; memory "lock" size = 1; min_write_delay = 4500; max_write_delay = 4500; read = "0 1 0 1 1 0 0 0 0 0 0 0 0 0 0 0", "x x x x x x x x x x o o o o o o"; write = "1 0 1 0 1 1 0 0 1 1 1 x x x x x", "x x x x x x x x 1 1 i i i i i i"; ; memory "calibration" size = 1; read = "0 0 1 1 1 0 0 0 0 0 0 x x x x x", "0 0 0 0 0 0 0 0 o o o o o o o o"; ; memory "signature" size = 3; read = "0 0 1 1 0 0 0 0 0 0 0 x x x x x", "x x x x x x a1 a0 o o o o o o o o"; ; ;